Шаг 23 - Некоторые особенности синтаксиса формул часть 2.

Продолжаем Шаг 20 - Некоторые особенности синтаксиса формул.

Функции даты и времени

Мы уже рассмотрели функции форматирования значений даты/времени. Однако по своей сущности, тип данных дата/время – числовой, что подразумевает некоторые арифметические операции. В Crystal Reports допустимы две таких операции:

Вычитание одной даты из другой.
Например: {Orders.PayDate}-{Orders.OrderDate}
Возвращает разницу (в днях) между датой оплаты и датой заказа

Сложение даты с целым числом

Возвращает дату, отстоящую от исходной на число дней, определенное числом. Это число может быть как положительным, так и отрицательным.

Формулы If-Then-Else

Людям, мало-мальски знакомым с программированием нет смысла объяснять предназначение этой формулы. В Crystal Reports ее синтаксис таков:

If <проверка> Then <результат для true> Else <выражение для false>

Ключевое слово Else и выражение для него необязательны. Тестовая часть формулы использует операторы сравнения. Для создания сложных условий проверки можно одновременно использовать несколько операторов, объединенных булевыми операторами And, Or и Not.

If IsNull({Orders.Pay}) Then
		“Не оплачено”
Else	
		{Orders.Pay}

Для того, чтобы формула работала, необходимо привести выражения к одинаковому типу:

Так правильно:

If IsNull({Orders.Pay}) Then
		“Не оплачено”
Else	
		ToText({Orders.Pay},”#0.00”)

Бывает, что внутри секций формулы необходимо выполнить несколько операторов. В таком случае группу операторов необходимо заключить в круглые скобки.

Формулы «контролирующие» поля БД

Бывает, что для каких-либо действий необходимо знать значение предыдущего или следующего поля БД. Для этого Crystal Reports содержит специальные функции Previous(fld) и Next(fld).

Пример:

If {Persons.LName}=Previous({Persons.LName}) Then
		“  -----/------ “
Else
		{Persons.LName}

Эта формула подавляет повторение фамилий в отчете

Область действия переменных

Основная идея применения переменных заключается в сохранении информации во время обработки отчета. Бывает необходимо уточнить, как долго и где будет хранится переменная. Для этого при объявлении переменной можно указать область ее действия

Local (локальная)		Переменная действует только внутри формулы, в которой она объявлена
Global (глобальная)	Переменная действует во всем главном отчете. Можно объявить глобальную переменную 
			в одной формуле и использовать ее значение в другой. Однако глобальные переменные не видны в подотчетах.
Shared (общая)		Переменная действует не только в главном отчете, но и в формулах подотчетов.

Примеры:

Local NumberVar  Bonus;
Global StringVar BonusName;
Shared DateVar BonusDate;

По умолчанию, если не указано ключевое слово области действия, область действия переменной - Global


Автор Юрий Гвоздев.
Hosted by uCoz